#ifndef __RECUR_QUEUE__
#define __RECUR_QUEUE__

/**
 * recurring queue循环队列的实现
 * 并不需要重写结构体，循环队列的数据结构还是原先的，只不过是操作方式变了
 * 
 */

#include"queueSeq.h"
#include<stdbool.h>
/**
 * 
 */
void initRecQueue(Queue *q){
    q->head=q->rear=0;
}
bool emptyRecQUeue(Queue q){
    if(q.head==q.rear){
        return true;
    }
    return false;
}
/**
 * 判断队列满的判断是read+1是否等于font
 * 说明这里一个空位表示满，而head=rear表示空
 */
bool enRecQueue(Queue *q,int x){
    if((q->rear+1)%MAX_SIZE_QUEUE==q->head){
        return false;
    }
    q->data[q->rear]=x;
    q->rear=(q->rear+1)%MAX_SIZE_QUEUE;
    return true;
}

bool deRecQueue(Queue *q,int *x){
    if(q->rear==q->head){//表示空，无法出队列
        return false;
    }
    (*x)=q->data[q->head];
    q->head=(q->head+1)%MAX_SIZE_QUEUE;//队尾指针+1 取模
    return true;
}
#endif